package org.xb.Demo;

/**
 * @Author
 * @Description
 * @Date created in 15:20 2023/12/8
 */
abstract class AbstractClass {
    // 模板方法，定义算法框架
    public final void templateMethod() {
        primitiveOperation1();
        primitiveOperation2();
        concreteOperation();
        hook();
    }

    // 抽象步骤，由子类实现
    protected abstract void primitiveOperation1();

    protected abstract void primitiveOperation2();

    // 具体方法，可能在抽象类中给出默认实现
    private void concreteOperation() {
        // 具体实现
    }

    // 钩子方法，提供默认或空实现，子类可以选择性地覆盖
    protected void hook() {
        // 默认实现
    }
}

